﻿using SD.Infrastructure.DTOBase;
using SlamDunk.MES.IAppService.DTOs.Outputs.FoundationContext;
using SlamDunk.ValueObjects.Enums;
using System;
using System.Runtime.Serialization;

namespace SlamDunk.MES.IAppService.DTOs.Outputs.StockContext
{
    /// <summary>
    /// 物料批次数据传输对象
    /// </summary>
    [DataContract]
    public class MaterialLotInfo : BaseDTO
    {
        #region 物料定义Id —— Guid MaterialId
        /// <summary>
        /// 物料定义Id
        /// </summary>
        [DataMember]
        public Guid MaterialId { get; set; }
        #endregion

        #region 物料定义编号 —— string MaterialNo
        /// <summary>
        /// 物料定义编号
        /// </summary>
        [DataMember]
        public string MaterialNo { get; set; }
        #endregion

        #region 物料定义名称 —— string MaterialName
        /// <summary>
        /// 物料定义名称
        /// </summary>
        [DataMember]
        public string MaterialName { get; set; }
        #endregion

        #region 供应商Id —— Guid SupplierId
        /// <summary>
        /// 供应商Id
        /// </summary>
        [DataMember]
        public Guid SupplierId { get; set; }
        #endregion

        #region 供应商编号 —— string SupplierNo
        /// <summary>
        /// 供应商编号
        /// </summary>
        [DataMember]
        public string SupplierNo { get; set; }
        #endregion

        #region 供应商名称 —— string SupplierName
        /// <summary>
        /// 供应商名称
        /// </summary>
        [DataMember]
        public string SupplierName { get; set; }
        #endregion

        #region 生产批号 —— string ProductionBatchNo
        /// <summary>
        /// 生产批号
        /// </summary>
        [DataMember]
        public string ProductionBatchNo { get; set; }
        #endregion

        #region 生产日期 —— DateTime ProducedDate
        /// <summary>
        /// 生产日期
        /// </summary>
        [DataMember]
        public DateTime ProducedDate { get; set; }
        #endregion

        #region 保质期 —— TimeSpan GuaranteePeriod
        /// <summary>
        /// 保质期
        /// </summary>
        [DataMember]
        public TimeSpan GuaranteePeriod { get; set; }
        #endregion

        #region 过期日期 —— DateTime ExpiredDate
        /// <summary>
        /// 过期日期
        /// </summary>
        [DataMember]
        public DateTime ExpiredDate { get; set; }
        #endregion

        #region 接收日期 —— DateTime ReceptionDate
        /// <summary>
        /// 接收日期
        /// </summary>
        [DataMember]
        public DateTime ReceptionDate { get; set; }
        #endregion

        #region 规格 —— string Specification
        /// <summary>
        /// 规格
        /// </summary>
        [DataMember]
        public string Specification { get; set; }
        #endregion

        #region 初始数量 —— decimal InitialQuantity
        /// <summary>
        /// 初始数量
        /// </summary>
        [DataMember]
        public decimal InitialQuantity { get; set; }
        #endregion

        #region 物料来源 —— MaterialSourceType MaterialSourceType
        /// <summary>
        /// 物料来源
        /// </summary>
        [DataMember]
        public MaterialSourceType MaterialSourceType { get; set; }
        #endregion

        #region 工厂模型Id —— Guid? FacilityId
        /// <summary>
        /// 工厂模型Id
        /// </summary>
        [DataMember]
        public Guid? FacilityId { get; set; }
        #endregion

        #region 描述 —— string Description
        /// <summary>
        /// 描述
        /// </summary>
        [DataMember]
        public string Description { get; set; }
        #endregion


        //导航属性

        #region 导航属性 - 工厂模型 —— FacilityInfo FacilityInfo
        /// <summary>
        /// 导航属性 - 工厂模型
        /// </summary>
        [DataMember]
        public FacilityInfo FacilityInfo { get; set; }
        #endregion
    }
}
